package com.example.netcenter.Url;

import com.example.netcenter.bean.AliCountBean;
import com.example.netcenter.bean.BankBean;
import com.example.netcenter.bean.BankListBean;
import com.example.netcenter.bean.BillingBean;
import com.example.netcenter.bean.DescBean;
import com.example.netcenter.bean.FruiteListBean;
import com.example.netcenter.bean.FruiteType;
import com.example.netcenter.bean.HeadBean;
import com.example.netcenter.bean.FruitOfferBean;
import com.example.netcenter.bean.NewProductBean;
import com.example.netcenter.bean.NewsBean;
import com.example.netcenter.bean.QDetailBean;
import com.example.netcenter.bean.QuoteBean;
import com.example.netcenter.bean.RegisterBean;
import com.example.netcenter.bean.ResultsData;
import com.example.netcenter.bean.ResultsList;
import com.example.netcenter.bean.SupplierAccountBean;
import com.example.netcenter.bean.SystemConstantBean;
import com.example.netcenter.bean.TipBean;
import com.example.netcenter.bean.UserBean;
import com.example.netcenter.bean.VersionBean;
import com.example.netcenter.bean.WebSiteBean;

import retrofit2.http.POST;
import retrofit2.http.Query;
import rx.Observable;


public interface ApiService {

    /**
     * 获取系统产量：ali等等
     *
     * @param method      system_config_constant
     * @param websiteNode 站点
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsData<SystemConstantBean>> SYSTEM_CONFIG_CONSTANT(@Query("method") String method,
                                                                       @Query("websiteNode") String websiteNode);

    /**
     * 发送短信验证码
     *
     * @param method
     * @param mobile
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<String> SENDSMS(@Query("method") String method,
                               @Query("mobile") String mobile);

    /**
     * 用户还未登录，不需验证
     * 用户动态登陆 手机号+动态码
     *
     * @param method
     * @param mobile
     * @param smsCode 动态码（由系统发送到用户手机）
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<RegisterBean> VERIFYSMSCODE(@Query("method") String method,
                                           @Query("mobile") String mobile,
                                           @Query("smsCode") String smsCode);

    /**
     * 获取站点列表
     *
     * @param method
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<WebSiteBean> CITYLIST(@Query("method") String method);

    /**
     * 供应商app 用户注册
     *
     * @param method
     * @param websiteNode 站点编码
     * @param websiteName 站点名称
     * @param name        姓名
     * @param mobile      手机号
     * @param address     地址
     * @param business    主营业务
     * @param aLiCount    支付宝账号
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<RegisterBean> REGIST(@Query("method") String method,
                                    @Query("websiteNode") String websiteNode,
                                    @Query("websiteName") String websiteName,
                                    @Query("name") String name,
                                    @Query("mobile") String mobile,
                                    @Query("address") String address,
                                    @Query("business") String business,
                                    @Query("aLiCount") String aLiCount);

    /*
      登录无TokenId
          */
    @POST("gss_supplier/server/supplier.do")
    Observable<RegisterBean> LOGINWihtoutTokenId(@Query("method") String method,
                                                 @Query("mobile") String mobile,
                                                 @Query("password") String password);

    /*
      登录
          */
    @POST("gss_supplier/server/supplier.do")
    Observable<RegisterBean> LOGIN(@Query("method") String method,
                                   @Query("tokenId") String tokenId);

    /**
     * 退出登录
     *
     * @param method
     * @param tokenId
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<RegisterBean> LOGOUT(@Query("method") String method,
                                    @Query("tokenId") String tokenId);

    /**
     * 修改密码
     *
     * @param method
     * @param supplierId
     * @param oldPass     原密码
     * @param newPass     新密码
     * @param confirmPass 确认密码
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<RegisterBean> UPDATEPWD(@Query("method") String method,
                                       @Query("supplierId") String supplierId,
                                       @Query("oldPass") String oldPass,
                                       @Query("newPass") String newPass,
                                       @Query("confirmPass") String confirmPass);

    /**
     * 商品类别列表
     *
     * @param method
     * @param type
     * @param websiteNode
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<String> CommodityType(@Query("method") String method,
                                     @Query("type") String type,
                                     @Query("websiteNode") String websiteNode);


    /**
     * 个人信息
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<UserBean> SupplierInfo(@Query("method") String method,
                                      @Query("supplierId") String supplierId);


    /**
     * 关联支付宝
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<AliCountBean> UPDATE_ALI_COUNT(@Query("method") String method,
                                              @Query("supplierId") String supplierId,
                                              @Query("aliCount") String ali_count);


    /**
     * 银行卡列表
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<BankListBean> BANK_CARD_LIST(@Query("method") String method,
                                            @Query("supplierId") String supplierId,
                                            @Query("pageSize") String pageSize,
                                            @Query("pageNo") String pageNo);

    /**
     * 银行卡添加
     * name		持卡人姓名
     * bank		开户银行
     * card		卡号
     * mobile		预留手机号
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<BankBean> BANK_CARD_ADD(@Query("method") String method,
                                       @Query("supplierId") String supplierId,
                                       @Query("name") String name,
                                       @Query("bank") String bank,
                                       @Query("mobile") String mobile,
                                       @Query("card") String card);


    /**
     * 银行卡删除
     * cardId卡号
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<BankBean> BANK_CARD_REMOVE(@Query("method") String method,
                                          @Query("cardId") String cardId);

    /**
     * 个人信息修改
     *
     * @param method
     * @param supplierId type 1、姓名 2、地址、3、主营业务
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<AliCountBean> UPDATE_PER_INFO(@Query("method") String method,
                                             @Query("supplierId") String supplierId,
                                             @Query("content") String content,
                                             @Query("type") String type);


    /**
     * 报价
     *
     * @param method
     * @param supplierId
     * @param goodsId
     * @param note
     * @param price
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<AliCountBean> GOODS_QUOTED(@Query("method") String method,
                                          @Query("supplierId") String supplierId,
                                          @Query("goodsId") String goodsId,
                                          @Query("note") String note,
                                          @Query("price") String price);


    /**
     * 报价验证
     *
     * @param method
     * @param supplierId
     * @param goodsId
     * @return
     */


    @POST("gss_supplier/server/supplier.do")
    Observable<AliCountBean> QUOTED(@Query("method") String method,
                                    @Query("supplierId") String supplierId,
                                    @Query("goodsId") String goodsId);

    /*** 报价记录
     * @param method
     * @param supplierId
     * @param pageNo
     * @param pageSize
     * @return
     */

    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsData<QuoteBean>> QUOTED_LIST(@Query("method") String method,
                                                   @Query("supplierId") String supplierId,
                                                   @Query("pageNo") String pageNo,
                                                   @Query("pageSize") String pageSize);

    /**
     * 设置支付密码
     *
     * @param method
     * @param supplierId
     * @param smscode
     * @param oldPass
     * @param newPass
     * @param confirmPass
     * @return
     */

    @POST("gss_supplier/server/supplier.do")
    Observable<AliCountBean> SET_PASSWORD(@Query("method") String method,
                                          @Query("supplierId") String supplierId,
                                          @Query("smscode") String smscode,
                                          @Query("oldPass") String oldPass,
                                          @Query("newPass") String newPass,
                                          @Query("confirmPass") String confirmPass);

    /**
     * 报价详情
     *
     * @param method
     * @param quotedId
     * @return
     */

    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsData<QDetailBean>> QUOTED_DETAILS(@Query("method") String method,
                                                        @Query("quotedId") String quotedId);


    /**
     * 商品列表
     *
     * @param method
     * @param websiteNode
     * @param typeCode
     * @param pageSize
     * @param kind        1：国产，2：进口
     * @param pageNo
     * @return
     */

    @POST("gss_supplier/server/supplier.do")
    Observable<FruiteListBean> GOODS_LIST(@Query("method") String method,
                                          @Query("supplierId") String supplierId,
                                          @Query("websiteNode") String websiteNode,
                                          @Query("typeCode") String typeCode,
                                          @Query("kind") String kind,
                                          @Query("pageSize") String pageSize,
                                          @Query("pageNo") String pageNo);


    /**
     * 商品类别
     *
     * @param method
     * @param type        1：国产，2：进口
     * @param websiteNode
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<FruiteType> GOODS_TYPE_LIST(@Query("method") String method,
                                           @Query("supplierId") String supplierId,
                                           @Query("type") String type,
                                           @Query("websiteNode") String websiteNode);


    /**
     * 上新记录列表
     *
     * @param method
     * @param supplierId
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsList<NewProductBean>> NEW_GOOD_LIST(@Query("method") String method,
                                                          @Query("supplierId") String supplierId,
                                                          @Query("pageNo") String pageNo,
                                                          @Query("pageSize") String pageSize);

    /**
     * 添加商品上新记录
     *
     * @param method
     * @param supplierId 供应商id
     * @param goodsName  商品名称
     * @param imgs       图片
     * @param sourceCity 产地
     * @param packing    包装
     * @param sizeDesc   规格
     * @param priceUnit  单位  件/斤/个（直接传中文）
     * @param price      单价
     * @param note       备注
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsData<NewProductBean>> NEW_GOOD_ADD(@Query("method") String method,
                                                         @Query("supplierId") String supplierId,
                                                         @Query("goodsName") String goodsName,
                                                         @Query("imgs") String imgs,
                                                         @Query("sourceCity") String sourceCity,
                                                         @Query("packing") String packing,
                                                         @Query("sizeDesc") String sizeDesc,
                                                         @Query("priceUnit") String priceUnit,
                                                         @Query("price") String price,
                                                         @Query("note") String note);

    /**
     * 上新记录详情
     *
     * @param method
     * @param newGoodsId 上新记录ID
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsData<NewProductBean>> NEW_GOOD_DETAILS(@Query("method") String method,
                                                             @Query("newGoodsId") String newGoodsId);


    /**
     * 商品详情
     *
     * @param method
     * @param goodsId 上新记录ID
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsData<FruitOfferBean>> GOOD_DETAILS(@Query("method") String method,
                                                         @Query("goodsId") String goodsId);


    /**
     * 供应商条款须知--
     *
     * @param method gss_desc
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsData<DescBean>> SUPPLIER_TERMS(@Query("method") String method,
                                                     @Query("code") String code);

    /**
     * 供应商账户信息
     *
     * @param method     supplier_account
     * @param supplierId
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsData<SupplierAccountBean>> SUPPLIER_ACCOUNT(@Query("method") String method,
                                                                  @Query("supplierId") String supplierId);

    /**
     * 支付宝 缴纳保证金
     *
     * @param method     goto_pay_aliApp
     * @param supplierId
     * @param money      充值金额
     * @param billType   保证金类型：1国产，2进口
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsData<BillingBean>> GOTO_PAY_ALI(@Query("method") String method,
                                                      @Query("supplierId") String supplierId,
                                                      @Query("money") String money,
                                                      @Query("billType") String billType);

    /**
     * 微信 缴纳保证金
     *
     * @param method     goto_pay_weixinApp
     * @param supplierId
     * @param money      充值金额
     * @param billType   保证金类型：1国产，2进口
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<String> GOTO_PAY_WEIXIN(@Query("method") String method,
                                       @Query("supplierId") String supplierId,
                                       @Query("money") String money,
                                       @Query("billType") String billType);

    /**
     * 国产 保证金退款申请
     *
     * @param method     domestic_deposit_refund
     * @param supplierId
     * @param bankCardId 退款银行卡id
     * @param password   支付密码，需要加密
     * @param money      申请退款金额
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsData<BillingBean>> CHAIN_REFUND(@Query("method") String method,
                                                      @Query("supplierId") String supplierId,
                                                      @Query("bankCardId") String bankCardId,
                                                      @Query("password") String password,
                                                      @Query("money") String money);

    /**
     * 进口 保证金退款申请
     *
     * @param method     import_deposit_refund
     * @param supplierId
     * @param bankCardId 退款银行卡id
     * @param password   支付密码，需要加密
     * @param money      申请退款金额
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsData<BillingBean>> IMPORT_REFUND(@Query("method") String method,
                                                       @Query("supplierId") String supplierId,
                                                       @Query("bankCardId") String bankCardId,
                                                       @Query("password") String password,
                                                       @Query("money") String money);

    /**
     * 是否第一次支付
     *
     * @param method
     * @param supplierId
     * @param billType  保证金类型：1国产，2进口
     * @param billType   保证金类型：1国产，2进口
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsData<Boolean>> CHECK_FIRST_PAY(@Query("method") String method,
                                                     @Query("supplierId") String supplierId,
                                                      @Query("billType") String billType);

    /**
     * 消息列表
     *
     * @param method     supplier_msg_list
     * @param supplierId
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsList<NewsBean>> MSG_LIST(@Query("method") String method,
                                               @Query("supplierId") String supplierId,
                                               @Query("pageNo") String pageNo,
                                               @Query("pageSize") String pageSize);

    /**
     * 版本更新
     *
     * @param method     version_check_android
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<VersionBean> version_check_android(@Query("method") String method);

    /**
     * 未读消息数
     *
     * @param method     supplier_msg_count
     * @param supplierId
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsData<Integer>> MSG_COUNT(@Query("method") String method,
                                               @Query("supplierId") String supplierId);

    /**
     * 账单列表
     *
     * @param method
     * @param supplierId
     * @param billType   保证金类型，1：国产，2：进口
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsList<BillingBean>> SUPPLIER_BILL_LIST(@Query("method") String method,
                                                            @Query("supplierId") String supplierId,
                                                            @Query("billType") String billType,
                                                            @Query("pageNo") String pageNo,
                                                            @Query("pageSize") String pageSize);

    /**
     * 账单详情
     *
     * @param method
     * @param supplierBillId 账单id
     * @return
     */
    @POST("gss_supplier/server/supplier.do")
    Observable<ResultsData<BillingBean>> SUPPLIER_BILL_DETAILS(@Query("method") String method,
                                                               @Query("supplierBillId") String supplierBillId);

    /**
     * 价格提示
     *
     * @param method
     * @param supplierId
     * @param kind
     * @return
     */

    @POST("gss_supplier/server/supplier.do")
    Observable<TipBean> margin_query(@Query("method") String method,
                                     @Query("supplierId") String supplierId,
                                     @Query("kind") String kind);

    /**
     * 上传头像
     * face_img_upload
     *
     * @param method
     * @param supplierId
     * @param faceImg
     * @return
     */

    @POST("gss_supplier/server/supplier.do")
    Observable<HeadBean> UpLoadHeadImage(@Query("method") String method,
                                         @Query("supplierId") String supplierId,
                                         @Query("faceImg") String faceImg);
}